﻿using Onshi.POS.Modelo.Entidades;
using Onshi.POS.Modelo.Enumeradores;
using Onshi.POS.Repositorios;
using Onshi.POS.Compras.Vistas;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Onshi.POS.Compras
{
    public class ComprasAltaPresentador
    {
        #region Constructores

        public ComprasAltaPresentador(IComprasAlta vista)
        {
            this.vista = vista;
        }

        #endregion

        #region Atributos

        private IComprasAlta vista;

        #endregion

        #region Propiedades

        private RepositorioEventos RepositorioEventos
        {
            get { return new RepositorioEventos(); }
        }

        private RepositorioProveedores RepositorioProveedores
        {
            get { return new RepositorioProveedores(); }
        }

        private RepositorioPermisos RepositorioPermisos
        {
            get { return new RepositorioPermisos(); }
        }

        private RepositorioUsuarios RepositorioUsuarios
        {
            get { return new RepositorioUsuarios(); }
        }

        private RepositorioRegistros RepositorioRegistros
        {
            get { return new RepositorioRegistros(); }
        }

        private RepositorioArticulos RepositorioArticulos
        {
            get { return new RepositorioArticulos(); }
        }

        private RepositorioUbicaciones RepositorioUbicaciones
        {
            get { return new RepositorioUbicaciones(); }
        }

        #endregion

        #region Metodos

        public void Inicializar()
        {
        }

        public void Proveedor()
        {
            var proveedor = RepositorioProveedores.DevolverPorId(vista.IdProveedor);
            if (proveedor != null)
            {
                var listaDomicilios = new List<String>();
                foreach (var item in proveedor.Domicilios)
                    listaDomicilios.Add(item.DomicilioCompleto);
                vista.Domicilios = listaDomicilios;

                var listaTelefonos = new List<String>();
                foreach (var item in proveedor.Telefonos)
                    listaTelefonos.Add(item.TelefonoCompleto);
                vista.Telefonos = listaTelefonos;

                if (proveedor.Domicilios.Count == 1)
                    vista.ProveedorDomicilio = proveedor.Domicilios.First().DomicilioCompleto;
                if (proveedor.Telefonos.Count == 1)
                    vista.ProveedorTelefono = proveedor.Telefonos.First().TelefonoCompleto;
            }
            else
            {
                vista.Domicilios = new List<String>();
                vista.Telefonos = new List<String>();
                vista.ProveedorDomicilio = String.Empty;
                vista.ProveedorTelefono = String.Empty;
            }


            foreach (var item in RepositorioArticulos.DevolverTodos(false))
            {
                if (item.Tipo.Id == (Int32)EnumTiposArticulos.Estandar)
                {
                    if (item.Variantes.Count > 0)
                    {
                        var lis = Modelo.Objectos.ArticuloTipoSeleccion.GenerarListado(item.Variantes, RepositorioUbicaciones.DevolverTodos(), null);

                        var ds = new System.Data.DataSet();
                        ds.Tables.Add(Modelo.Objectos.ArticuloTipoSeleccion.GenerarTabla(lis, true, true));
                        ds.Tables.Add(Modelo.Objectos.ArticuloTipoSeleccion.GenerarTabla(lis, true, false));
                        ds.Tables.Add(Modelo.Objectos.ArticuloTipoSeleccion.GenerarTabla(lis, false, true));
                        ds.Tables.Add(Modelo.Objectos.ArticuloTipoSeleccion.GenerarTabla(lis, false, false));
                    }
                }
            }

        }



        #endregion
    }
}
